Progetto web data analytics

nota bene: in fase di presentazione le operazioni onerose non verranno eseguite, per visualizzare i risultati utilizzeremo i dati in cache, impostando presentation_mode = True.

Scraping

In questa fase andiamo a configurare i parametri di scraping.

Pulizia dei dati

In questa fase vengono presi i dataset grezzi ed eseguiamo:

Infine scriviamo il nuovo dataset su file.

Costruzione spazio semantico

In questa fase creiamo lo spazio semantico relativo ai post. Partiamo dalla rappresentazione vettoriale TF-IDF dei documenti rispetto ai termini del nostro dizionario. Eseguiamo LSI sulla matrice documenti/termini, prendendo le prime 80 dimensioni principali.

Rappresentazione dei post come network

In questa fase otteniamo il network dei post. I nodi rappresentano i post, tra due post c'è un link se hanno similarità coseno superiore alla soglia stabilita (0.65). Nel plot, ogni nodo ha un'etichetta dove vengono mostrati le sue prime 10 parole chiave, cioè i termini con più alto valore di tf-idf che non sono verbo o aggettivi.

Topic

Abbiamo deciso di estrapolare i topic attraverso l'algoritmo di community detection di Louvain sul grafo ottenuto precedentemente. Manteniamo solo le comunità che contengono più di tre post, per assicurarci che un topic sia effettivamente trattato in un certo numero di post.

Eseguiamo una fase di community characterization al fine di estrarre i termini più rappresentativi per ogni comunità. Per fare ciò abbiamo assegnato ad ogni comunità un documento dato dalla concatenazione di dei documenti dei suoi post. Successivamente abbiamo eseguito il TF-IDF su questo nuovo insieme di documenti.

Infine, memorizziamo le comunità ottenute su un file.

Visualizzazione topics

Di seguito la visualizzazione dei primi 4 topic con i rispettivi numeri di post e termini.

Preparazione dei commenti

Prima dell'analisi eliminiamo i commenti che:

Analisi dei commenti

Grazie ad un modello basato su rete neurale già allenato, facciamo sentiment e emotion analysis dei testi dei commenti.

Rete delle interazioni

Dalle precedenti analisi possiamo ottenere una matrice utente/topic con 1 se l'utente ha commentato positivamente il post, -1 se ha commentato negativamente, 0 altrimenti.

Facciamo la decomposizione SVD della matrice ottenendo del relativi matrici u, s e v.

Similarità dei topic rispetto alle reazioni

Grazie alla matrice v possiamo individuare i topic simili in base al comportamento dei commentatori.

Rappresentazione visuale

Creiamo un grafo per rappresentare i topic, fra due topic vi è un link se la loro similarità coseno nello spazio definito prima è al di sopra di una certa soglia. Inoltre, per ogni nodo non aggiungiamo più di 5 link per non appesantire la visualizzazione.

Hot topics

Dall'analisi dei commenti andiamo a ricavare quelli che sono i topic che hanno suscitato più interesse. Calcoliamo per ogni topic il numero mediano di commenti per i post che gli appartengono e il numero di post che contiene.

Sentiment dei topics

Abbiamo ricavato, in termini relativi, il sentiment per ogni topic a partire dai sentiment relativi ai commenti dei post.

Emotion dei topic

Abbiamo ricavato, in termini relativi, le emotion per ogni topic a partire dalle emotion relative ai post.

Sentiment rispetto ai profili

Abbiamo rappresentato le distribuzioni dei sentiment, dato un topic, rispetto ai profili che hanno pubblicato post su quel topic. L'obiettivo è evidenziare le differenti reazioni in base al bacino di utenza dei profili.

Valutazione di precision e recall

Per valutare la precision e la recall del sistema abbiamo preso in considerazione un solo topic (per ragioni di tempo). Abbiamo optato per un topic con un considerevole numero di post. Il topic in questione è il numero 11, che tratta dell'omicidio di Elena Del Pozzo, dove sono presenti 17 documenti.

Abbiamo valutato tutti i documenti all'interno del topic come pertinenti.

Successivamente, siamo andati alla ricerca di altri documenti che parlassero dello stesso argomento, ma che non fossero presenti nel topic. Per circoscrivere l'attività di ricerca abbiamo considerato solo i post che contenessero almeno uno tra i termini 'elena', 'martina', 'catania' e 'cadavere'.

Abbiamo ottenuto due ulteriori documenti che citano l'argomento in esame.